package com.zwh.se.constant_variable_operator;

/**
 * @author yexi
 * 在开始学习编程之前要了解的概念性质的东西记载
 * <1>现在这块地方被称为注释,在这里写的内容不会被 IDE 所编译,编译后产生的字节码文件中不会有注释的内容
 */

// <2> 这个被称为"类"，它和你的.java后缀的文件名必须保持一致。
public class Foreword {

    // <3> 代码块:
    // 1、用{}括起来的内容被称为代码块,代码块内部会形成作用域。{}必须前后匹配，不可以少了一半。
    // 2、作用域链:作用域可以嵌套,内层作用域可以访问外层作用域所定义的变量,外层不能访问内层作用域才定义的变量
    //    * 当在作用域中访问一个变量时,首先在自身作用域中找该变量,如果自身作用域能找到,不继续向上一层找
    //    * 如果在本层没有找到,继续向上一层找,如果该层没有,继续向其上一层楼,查找的过程形成一条链,这条链称为作用域链(scope chain)
    {
        {

            //这种将变量提取出来提升作用域的范围的做法——学名叫做"提升作用域"
            int i = 0;
            for (; i < 3; i++) {

            }

        }
    }

    // <4> 这块被称为方法。
    // 而main方法是程序的入口,一个类想要运行就必须有main方法（主方法）。
    // 简单地理解就是java这门语言要运行是,会找到这一个地方,然后再根据里面有什么内容来进行运行(也就是虚拟机会识别main方法，从这个方法作为程序的入口)
    // 在方法旁边的括号的args参数被称为"形式参数",简称"形参",是一种虚拟变量,你可以为args随意命名,它并不会对main方法有什么影响
    // main方法中的参数实际上可支持多种写法：比如String[] args,String [] args,String args[]。不过最好还是使用默认的为妙。
    public static void main(String[] args) {
        // <5> 用这条代码可以往控制台输出字。同时记住java代码的编写，每行结尾的时候都需要使用;结束
        System.out.println("往控制台输出字");

        // 拓展介绍(新手可忽视,以后再看):浅谈一下main方法里面这个String[] args，有什么用？
        // 其实，如果你只是定义而什么都没操作，那么它等同于传入了一个长度为0的数组(new String[0])
        System.out.println(args.length);// 0
        // 那么这个实参到底怎么用呢？其实是在运行字节码文件的时候。
        // 比如说当前文件，如果你在控制台操作的话可以这样写： java Foreword aa bb cc "d d"(需要使用到空格这种特殊字符用双引号引起来)
        // 也就是说如果你有需要在运行时才选择传入的参数，就可以利用这个args传入，然后再根据这些参数进行一些定制化操作的意思
    }

    // TIPS:注意的是main入口除了args形参之外，不能有哪怕一点的编写错误，错误了一点那么它就不是所谓的main入口，而仅仅只是一个普通的方法
    // 也就是说：可以接受方法重载
    public static void main(String args) {
        System.out.println("往控制台输出字");
    }

    // <6>一个.java文件中可以包含多个class，但是public class只能有1个，并且使用public class的必须就是文件名。
    static class Another{}
    class MoreClass{}

    // <7>关键字和保留字：指的是留给系统使用的表示特殊含义的字符串，比如在上面就已经使用public、class、static、void
    // 他们因为都含有已经确定的意思，所以你在命名标识符的时候，不可以使用它们，因为系统在解析到它们时只会按它们已经定义好的意思来执行。

}
